package grafica.jugador.controladores;

import grafica.jugador.ventanas.Atacar;
import grafica.jugador.ventanas.Distribuir;
import grafica.jugador.ventanas.PanelJugador;

import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;

import logica.excepciones.JugadoresException;
import logica.excepciones.PaisesException;
import logica.excepciones.PartidaException;
import logica.fachadas.IFabrica;
import logica.fachadas.IFachadaJugadores;
import persistencia.Archivo;
import persistencia.Config;
import persistencia.Persistencia;
import persistencia.PersistenciaException;

public class ControladorDistribuir {
	 private IFachadaJugadores fachadaJugadores;
	 private Distribuir distribuir; // Ventana
//	 private PanelJugador panelJugador;
	
//	public ControladorDistribuir(Distribuir distribuir, PanelJugador panelJugador){
	public ControladorDistribuir(Distribuir distribuir){	
//		this.panelJugador = panelJugador;
		IFabrica fabrica = null;		
		this.distribuir= distribuir;		
		try{
			Config conf = Config.getInstancia();
			String servidor = conf.getArchivoConf("Servidor");
			int puerto =  Integer.parseInt(conf.getArchivoConf("Puerto"));		
			fabrica = (IFabrica)Naming.lookup("//" + servidor +":" + puerto + "/fabrica");			
			fachadaJugadores = fabrica.getFachadaJugador();
		} catch (MalformedURLException e) {			
			this.distribuir.setJLabelInfo(e.getMessage());
		} catch (NotBoundException e) {
			this.distribuir.setJLabelInfo(e.getMessage());		
		} catch (RemoteException e) {
			this.distribuir.setJLabelInfo(e.getMessage());
		} catch (PersistenciaException e) {			
			this.distribuir.setJLabelInfo(e.getMessage());
		}	
	}
	
	public void DistribuirFichas (String nomJugador, String nomPDest, int cantFichas){
		try{	
		    fachadaJugadores.distribuirFichas(nomJugador, nomPDest, cantFichas);
		    distribuir.dispose();
		} catch (RemoteException e) {			
			distribuir.setJLabelInfo(e.getMessage());		
	    } catch (JugadoresException e) {	;
	    	distribuir.setJLabelInfo(e.darMensaje());
		} catch (PartidaException e) {			
			distribuir.setJLabelInfo(e.darMensaje());
		} catch (PaisesException e) {	
			distribuir.setJLabelInfo(e.darMensaje());
		} 
	}

}
